home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / cocktail / mtc.lha / mtc / src / Scanner.md < prev    next >
Text File  |  1992-11-24  |  1KB  |  51 lines

  1. (* $Id: Scanner.md,v 2.3 1992/08/18 09:05:32 grosch rel $ *)
  2.  
  3. DEFINITION MODULE Scanner;
  4.  
  5. IMPORT Strings;
  6.  
  7. (* line 15 "modula.rex" *)
  8.  
  9. FROM StringMem    IMPORT tStringRef;
  10. FROM Idents    IMPORT tIdent;
  11. FROM Tokens    IMPORT TokIdent, TokDecConst, TokOctalConst, TokHexConst,
  12.                TokCharConst, TokRealConst, TokStringConst;
  13. FROM Positions    IMPORT tPosition;
  14.  
  15. TYPE
  16.   tScanAttribute    = RECORD    (* type for token attributes    *)
  17.               Position    : tPosition    ;
  18.     CASE : SHORTCARD OF
  19.     | TokIdent    : Ident        : tIdent    ;
  20.     | TokDecConst    ,
  21.       TokOctalConst ,
  22.       TokHexConst    : IntValue    : CARDINAL    ;
  23.     | TokCharConst    : CharValue    : CHAR        ;
  24.     | TokRealConst    : RealValue    : tStringRef    ;
  25.     | TokStringConst: StringValue    : tStringRef    ;
  26.     END;
  27.   END;
  28.  
  29. PROCEDURE ErrorAttribute (Token: CARDINAL; VAR Attribute: tScanAttribute);
  30.              (* Returns in parameter 'Attribute' default    *)
  31.              (* values for the attributes of token 'Token'    *)
  32.  
  33.  
  34. CONST EofToken    = 0;
  35.  
  36. VAR TokenLength    : INTEGER;
  37. VAR Attribute    : tScanAttribute;
  38. VAR ScanTabName    : ARRAY [0 .. 127] OF CHAR;
  39. VAR Exit    : PROC;
  40.  
  41. PROCEDURE BeginScanner    ;
  42. PROCEDURE BeginFile    (FileName: ARRAY OF CHAR);
  43. PROCEDURE GetToken    (): INTEGER;
  44. PROCEDURE GetWord    (VAR Word: Strings.tString);
  45. PROCEDURE GetLower    (VAR Word: Strings.tString);
  46. PROCEDURE GetUpper    (VAR Word: Strings.tString);
  47. PROCEDURE CloseFile    ;
  48. PROCEDURE CloseScanner    ;
  49.  
  50. END Scanner.
  51.